/**
 * 寻找出带头结点的单链表倒数第k个元素
 * 
 * 思路:定义两个结点:node为遍历结点，从头开始;倒数结点p，从头开始遍历.
 * 首先遍历结点node从头开始遍历，当遍历到第k个位置处的值得时候,倒数结点开始从头遍历，
 * 且和遍历结点node同步向后移,当遍历结点node遍历完之后,即node=NULL，p结点所指就是
 * 倒数第k个结点。
 * 
 */

#include <stdio.h>
#include <stdlib.h>

typedef struct LNode{
	int data;
	struct LNode* next;
} LNode, *LinkedList; 

void core(LinkedList &list, int k)
{
	LinkedList node=list->next;		//node为遍历结点
	LNode* q=node->next;			//q结点用来存放倒数第k个结点
	
	int count=0;	//计数器
	while(node)
	{
		//计数器并没有到达第k个位置,遍历结点node继续后移
		if(count<k) count++;
		//如果count=k，则说明第k个位置找到了,q指针开始移动,遍历结点node也要继续移动
		else q=q->next;	
	}
	node=node->next;
	
	//查找失败
	if(count < k) return;
	else 
		printf("%d\n",q->data);
}
